# Swagger 文档配置
from flask import Blueprint
from flask_restx import Api

# 创建文档蓝图
docs_bp = Blueprint('docs', __name__)

# 创建文档API实例
docs_api = Api(
    docs_bp,
    version='1.0',
    title='Flask RESTful API 文档',
    description='这是一个使用Flask-RESTX构建的RESTful API示例，包含用户管理和认证功能',
    doc='/docs/',
    contact='开发团队',
    contact_email='dev@example.com'
)

# 添加命名空间
def register_namespaces():
    """注册所有API命名空间到文档"""
    from app.api.restful import user_ns, auth_ns
    from app.api.restful.v2 import user_ns as user_ns_v2, auth_ns as auth_ns_v2
    
    # 注册v1命名空间
    docs_api.add_namespace(user_ns, path='/v1')
    docs_api.add_namespace(auth_ns, path='/v1')
    
    # 注册v2命名空间
    docs_api.add_namespace(user_ns_v2, path='/v2')
    docs_api.add_namespace(auth_ns_v2, path='/v2')

# 创建文档初始化函数
def init_docs(app):
    """初始化Swagger文档"""
    app.register_blueprint(docs_bp, url_prefix='/api/docs')
    
    # 注册命名空间
    with app.app_context():
        register_namespaces()
    
    # 添加自定义文档配置
    @app.before_request
    def before_request():
        """记录API请求信息"""
        pass
    
    @app.after_request
    def after_request(response):
        """记录API响应信息"""
        response.headers['X-API-Version'] = '1.0'
        return response